<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // example 1
        var a = {},
            b = '123',
            c = 123;
        a[b] = 'b';
        a[c] = 'c';
        console.log(a[b]); // c 因为 a['123']  <==> a[123]
        // example 2
        var a = {},
            b = Symbol('123'), // Symbol 数据类型 ，Symbol('123') !== Symbol('123')
            c = Symbol('123');
        a[b] = 'b';
        a[c] = 'c';
        console.log(a[b]); // Symbol 是 ES6 中新增的数据类型 typeof Symbol('123') === "symbol"
        // 它创建的出来的值是唯一值 Symbol('123') === Symbol('123') ===> false
        // example 3
        var a = {},
            b = {
                key: '123'
            },
            c = {
                key: '456'
            };
        a[b] = 'b';
        a[c] = 'c';
        console.log(a[b]); 
        // 1. 对象的属性名不能是一个对象(遇到对象属性名，会默认转换为字符串)
        // obj={} arr=[12,23] obj[arr]="janine" obj=>{"12,23":"janine"}
        // 2. 普通对象.toString() 调取的是 Object.prototype 上的方法（这个方法是用来检测数据类型的）
        // obj={} obj.toString()=>"[object Object]"
        // obj[b]='b' => obj["object Object"]='b'
    </script>
</body>

</html>